//package com.baseweb.webadmin.weixin.pay;
//
//import java.io.ByteArrayOutputStream;
//import java.io.InputStream;
//import java.io.PrintWriter;
//import java.util.Map;
//
//import javax.annotation.Resource;
//import javax.servlet.http.HttpServletRequest;
//import javax.servlet.http.HttpServletResponse;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.stereotype.Controller;
//import org.springframework.web.bind.annotation.RequestMapping;
//
//import com.baseweb.webadmin.core.Const;
//import com.baseweb.webadmin.mvc.model.Orders;
//import com.baseweb.webadmin.mvc.service.OrdersMyselfService;
//import com.baseweb.webadmin.core.util.ToolHelper;
//import com.baseweb.webadmin.weixin.utils.XMLParseUtil;
//
///**
// * 微信支付成功后的回调函数
// * @author wcc
// *
// */
//@Controller
//@RequestMapping(value="/webpage/weixin/pay")
//public class WebPageCallback {
//	private static Logger  logeer=LoggerFactory.getLogger(WebPageCallback.class);
//	@Resource
//	private OrdersMyselfService ordersService;
//	/**
//	 * 微信支付成功后的回调函数
//	 * 该函数请求路径必须Constant类中的NOTIFY_URL相同
//	 * @return xml
//	 */
//	@RequestMapping(value="/callBack")
//    public void  callBack(HttpServletRequest request,HttpServletResponse response){
//		logeer.info("微信支付成功后开始回调");
//	        try {
//				InputStream inStream = request.getInputStream();
//				ByteArrayOutputStream outSteam = new ByteArrayOutputStream();
//				byte[] buffer = new byte[1024];
//				int len = 0;
//				while ((len = inStream.read(buffer)) != -1) {
//				    outSteam.write(buffer, 0, len);
//				}
//				outSteam.close();
//				inStream.close();
//
//      //获取微信调用我们notify_url的返回信息
//				String result  = new String(outSteam.toByteArray(),"utf-8");
//
//				logeer.info("request微信支付成功返回的数据"+	response.getWriter());
//				logeer.info("微信支付成功返回的数据"+result);
//
//				Map<Object, Object> map = XMLParseUtil.doXMLParse(result);
//
//
//				for(Object keyValue : map.keySet()){
//					logeer.info(keyValue+"="+map.get(keyValue));
//				}
//
//				if(map.get("return_code").toString().equalsIgnoreCase("SUCCESS")){
//					 if (map.get("result_code").toString().equalsIgnoreCase("SUCCESS")) {
//						 Orders  orders = dealOrderData(map);
//				    	 synchronized (orders) {
//				    		logeer.info("微信支付回调：开始更新数据库订单状态");
//				    		ordersService.ordersPay(orders);
//				    		logeer.info("微信支付回调：更新订单状态成功");
//						}
//				    	//通知微信服务器，信息成功接收，不必再发起请求
//				    	 logeer.info("-------------"+setXML("SUCCESS", "ok"));
//				        response.getWriter().write(setXML("SUCCESS", "ok"));
//
//				   }
//				}
//			} catch (Exception e) {
//				logeer.error("WebPageCallback :微信支付成功回调处理数据时出现异常",e);
//			}
//
//
//	      }
//
//	        private static String setXML(String return_code, String return_msg) {
//	                return "<xml><return_code><![CDATA[" + return_code
//	                + "]]></return_code><return_msg><![CDATA[" + return_msg
//	                + "]]></return_msg></xml>";
//	    }
//
//	    /**
//	     * 处理订单数据
//	     * @param map
//	     * @return orders
//	     */
//	    private  Orders dealOrderData(Map map){
//	    	Orders  orders = new Orders();
//	    	orders.setPayMethod(Const.OrdersPayMethod.WEIXIN);//支付方式 微信
//	    	orders.setWeiXinOrderId((String)map.get("transaction_id"));//微信订单号
//	    	orders.setOrderNum((String) map.get("out_trade_no"));//商家订单号
//	    	//金额转换，微信返回的是分
//	    	String  stotalTee =  (String) map.get("total_fee");
//	    	orders.setActualTotalPay(amountConversion(stotalTee));//总金额
//  	        orders.setWeiXinBankType( (String) map.get("bank_type"));
//  	        orders.setWeiXinFeeType((String) map.get("fee_type"));
//  	        orders.setWeiXinTimer((String) map.get("time_end"));
//  	        orders.setWeiXinTradeType((String) map.get("trade_type"));
//  	        orders.setWeiXinOpenid( (String) map.get("openid"));
//  	        orders.setWeiXinSign((String) map.get("sign"));
//  	        orders.setWeiXinCashFee(amountConversion((String) map.get("cash_fee")));
//  	        orders.setWeiXinCashFeeType((String) map.get("cash_fee_type"));
//  	        orders.setWeiXinIsSubscribe((String) map.get("is_subscribe"));
//	      return  orders;
//
//	    	   /**
//	          //微transaction_id 信支付订单号
//		       // 商户订单号	out_trade_no
//		        //total_fee订单的总金额 分
//		        //bank_type付款银行
//		        //fee_type 货币种类
//
//		        //支付完成时间	time_end
//		        //交易类型trade_type：网页支付
//
//		        //openid
//		        //sign
//		        //cash_fee现金支付的金额
//		        //is_subscribe
//		        //cash_fee_type
//		        */
//	    }
//
//	    /**
//	     * 金额转换
//	     * @return  double 元
//	     */
//	    private  static double  amountConversion(String stotalTee){
//	    	logeer.info("微信返回的金额String"+stotalTee);
//		   	 if(ToolHelper.isEmpty(stotalTee)){
//	    		 stotalTee="0";
//	    	 }
//	    	 int  total_fee =  Integer.parseInt(stotalTee);//总金额分
//	    		logeer.info("微信返回的金额int:分"+total_fee);
//	    	 double ctualTotalPay = (double)total_fee/100;//总金额元
//	    	    logeer.info("转换后的金额double:元"+ctualTotalPay);
//	    	 return ctualTotalPay;
//	    }
//
//
//	    public static void main(String[] args) {
//			amountConversion("120");
//		}
//
//    }
//
